package com.itheima.controller;

import com.itheima.common.R;
import com.itheima.dto.RoleDto;
import com.itheima.dto.SysRoleMenuDto;
import com.itheima.entity.RoleAdd;
import com.itheima.entity.SysRole;
import com.itheima.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sys_role")
public class SysRoleController {
    @Autowired
    private SysRoleService sysRoleService;

    /**
     * 角色分页展示
     *
     * @param page
     * @param limit
     * @param name
     * @return
     */
    @GetMapping("/list")
    public R<RoleDto> list(String page, String limit, String name) {
        RoleDto roleList = sysRoleService.getRoleList(page, limit, name);
        return R.success(roleList);
    }

    /**
     * 添加角色数据
     *
     * @param roleAdd
     * @return
     */
    @PostMapping("/add")
    public R<String> add(@RequestBody RoleAdd roleAdd) {
        sysRoleService.add(roleAdd);
        return R.success("添加成功");
    }

    /**
     * 全部角色数据展示
     *
     * @return
     */
    @GetMapping("/allData")
    public R<List<SysRole>> getAllData() {
        List<SysRole> allData = sysRoleService.list();
        return R.success(allData);
    }



    /**
     * 数据回显
     *
     * @param id
     * @return
     */
    @GetMapping("/rowInfo")
    public R rowInfo(String id){
        SysRoleMenuDto sysRoleMenuDto = sysRoleService.rowInfo(id);
        return R.success(sysRoleMenuDto);
    }

    /**
     * 角色修改并修改关联菜单信息
     *
     * @param sysRoleMenuDto
     * @return
     */
    @PostMapping("/update")
    public R<String> update(@RequestBody SysRoleMenuDto sysRoleMenuDto){
        sysRoleService.updateRoleWithMenu(sysRoleMenuDto);
        return R.success("修改成功!");
    }



    /**
     * 角色删除并删除关联菜单信息
     *
     * @param id
     * @return
     */
    @GetMapping("/del")
    public R<String> delRoleWithMenu(String id) {
        sysRoleService.delRoleWithMenu(id);
        return R.success("删除成功!");
    }

}